package com.tang.objectOriented.basics.overload;

public class OverLoad01 {
    public static void main(String[] args){
        MyCalculator mc = new MyCalculator();
        System.out.println(mc.calculate(1, 2));
        System.out.println(mc.calculate(1.1, 2));
        System.out.println(mc.calculate(1, 2.1));
    }

}

// 重载
// 1．方法名相同
// 2. 行参必须不同（个数，顺序，类型，至少一个）
class MyCalculator {
    //下面的四个 calculate 方法构成了重载
    //两个整数的和
    public int calculate(int n1, int n2) {
        System.out.println("calculate(int n1, int n2) 被调用");
        return n1 + n2;
    }

    //没有构成方法重载, 仍然是错误的，因为是方法的重复定义
    //public void calculate(int n1, int n2) {
    //    System.out.println("calculate(int n1, int n2) 被调用");
    //   int res = n1 + n2;
    //}
    //一个整数，一个 double 的和
    public double calculate(int n1, double n2) {

        return n1 + n2;
    }
    //一个 double ,一个 Int 和
    public double calculate(double n1, int n2) {
        System.out.println("calculate(double n1, int n2) 被调用..");
        return n1 + n2;
    }
    //三个 int 的和
    public int calculate(int n1, int n2,int n3) {

        return n1 + n2 + n2;
    }
}